﻿using System;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using WalkingTec.Mvvm.Core;

namespace HengTong.Model.Db.Hr;

/// <summary>
/// 荣誉职称
/// </summary>
public class SysPersonProfessionalTitle : BasePoco
{
    [Display(Name = "员工ID", Description = "关联员工主键", GroupName = "基本信息")]
    public Guid? PersonId { get; set; }

    [Display(Name = "员工", Description = "关联的员工实体", GroupName = "基本信息")]
    public SysPerson Person { get; set; }
    
    [Required]
    [Display(Name = "资质类别ID", Description = "关联职称类别", GroupName = "基本信息")]
    public Guid? ProfessionalTitleTypeId { get; set; }

    [Display(Name = "资质类别", Description = "关联的职称类别", GroupName = "基本信息")]
    public SysPersonProfessionalTitleType ProfessionalTitleType { get; set; }
    
    [Required]
    [Display(Name = "资质名称", Description = "资质的具体名称", GroupName = "资质信息")]
    [StringLength(128)]
    public string QualificationName { get; set; }

    [Display(Name = "资质等级", Description = "资质等级（如：国家级/省级/市级/区县级）", GroupName = "资质信息")]
    public QualificationLevel? QualificationLevel { get; set; }

    
    [Display(Name = "发证单位", Description = "颁发证书的机构", GroupName = "资质信息")]
    [StringLength(128)]
    public string IssuingAuthority { get; set; }

    [Display(Name = "证书编码", Description = "证书的唯一编码", GroupName = "资质信息")]
    [StringLength(64)]
    public string CertificateCode { get; set; }

    [Display(Name = "获得日期", Description = "获得资质的日期", GroupName = "资质信息")]
    public DateTime? ObtainedDate { get; set; }

    [Display(Name = "有效期", Description = "资质的有效期", GroupName = "资质信息")]
    public DateTime? ExpiryDate { get; set; }

    [Display(Name = "薪资奖励", Description = "与资质相关的薪资或奖励信息", GroupName = "资质信息")]
    [Column(TypeName = "decimal(10,2)")]
    public decimal? SalaryReward { get; set; }

    [Display(Name = "证书文件ID", Description = "资质相关的证明材料ID", GroupName = "资质信息")]
    public Guid? CertificateDocumentId { get; set; }

    [Display(Name = "证书文件", Description = "资质相关的证明材料", GroupName = "资质信息")]
    public FileAttachment CertificateDocument { get; set; }

    [Display(Name = "备注", Description = "额外说明信息", GroupName = "资质信息")]
    [StringLength(500)]
    public string Remark { get; set; }
}